package com.skyline.user.dao;

import com.skyline.user.model.User;

public interface AccountInfoDao {
	/**
	 * updateSecurityInfo对帐户安全信息进行修改
	 * 
	 * @param authority
	 *            隐私程度(完全公开，只对同城，只对朋友，私有)
	 * @param securityQuestion
	 *            安全问题
	 * @param securityAnswer
	 *            安全答案
	 * @param securityEMail
	 *            安全E-mail，当用户需要找回密码里，可以通过安全E-mail来找回，一期不建立，后期考虑
	 * @return void
	 */
	public void updateSecurityInfo(Long userid, Integer authority, String securityQuestion, String securityAnswer, String securityEMail);

	/**
	 * 更改密码
	 * @param userid 用户的ID
	 * @param newPassword 新密码
	 */
	public void updatePassword(Long userid, String newPassword);

	/**
	 * queryAccountInfoByUserID通过用户ID来查看用户的帐户信息
	 * 
	 * @param userid
	 *            用户ID
	 * @return User 所找到用户
	 */

	public User queryAccountInfoByUserID(Long userid);

	/**
	 * queryAccountInfoByEmail通过用户Email来查看用户的帐户信息
	 * 
	 * @param email
	 *            用户email
	 * @return User 所找到用户
	 */
	public User queryAccountInfoByEmail(String email);

	/**
	 * querySecurityQuestion通过用户Email取得用户的安全问题，与existSecurityAnswer一直使用，
	 * 达到找回密码的功能
	 * 
	 * @param email
	 *            用户email
	 * @return User
	 */
	public User querySecurityQuestion(String email);

	/**
	 * existSecurityAnswer 检查用户输入的securityAnswer是否正确
	 * 
	 * @param userid
	 *            用户ID
	 * @param securityAnswer
	 *            用户输入的安全答案
	 * @return boolean 表示是否成功
	 */
	public boolean existSecurityAnswer(Long userid, String securityAnswer);

	/**
	 * existkSecurityEmail
	 * 检查安全E-mail，用户点击安全E-amil中的链接，existkSecurityEmail检查链接中的token
	 * 
	 * @param token
	 *            token
	 * @return boolean 表示是否成功
	 */
	public boolean existSecurityEmail(String token);

	/**
	 * 通过 email与密码来查找帐户信息（仅仅用于用户找回密码）
	 * 
	 * @param email
	 * @param password
	 * 
	 * @return
	 */
	public User queryAccountInfoByEmailAndPswd(String email, String password);
}
